package rta.util
{
	import flash.events.Event;
	import flash.filesystem.File;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	
	import rta.datos.DB;
	import rta.datos.conexion.ImagenSecuenciaDB;
	import rta.datos.conexion.PerfilDB;
	import rta.datos.to.Imagen;
	import rta.datos.to.ImagenSecuencia;
	import rta.datos.to.Perfil;
	import rta.datos.to.Sonido;

	public class ImportarPerfil
	{
		private var archivo:File;
		private var perfil:Perfil;
		private var xml:XML;
		private var imagenSecuenciaDB:ImagenSecuenciaDB;
		private var perfilDB:PerfilDB;
		public var callback:Function;
		private var arrayImagenes:ArrayCollection;
		
		public function procesarArchivo(archivo:File):void{
			this.archivo = archivo;
			
			archivo.addEventListener(Event.COMPLETE, cargaCompleta);
			archivo.load();
		}
		
		private function cargaCompleta(event:Event):void{
			try{
				archivo.removeEventListener(Event.COMPLETE, cargaCompleta);
				
				this.xml = new XML(archivo.data.readUTF());
				
				//Guardando perfil
				perfil = new Perfil();
				perfil.nombres = xml.nombres;
				perfil.apellidoPaterno = xml.apellidoPaterno;
				perfil.apellidoMaterno = xml.apellidoMaterno;
				perfil.run = xml.run;
				perfil.sexo = xml.sexo;
				perfil.rutaImagen = perfil.sexo == "M" ? "rta/vista/estilos/imagenes/defecto_hombre.png" : "rta/vista/estilos/imagenes/defecto_mujer.png";
				
				perfilDB = new PerfilDB(DB.connection);
				perfilDB.callback = onGuardarPerfil;
				perfilDB.guardarPerfil(perfil, true);
			}
			catch(e:Error){
				Alert.show("No se puede leer el archivo", "ERROR");
			}
		}
		
		private function onGuardarPerfil():void{
			try{
				//Guardando imagenes de secuencia
				arrayImagenes = new ArrayCollection();
				for each(var xmlIS:XML in xml.secuencia.imagenesSecuencia.source.item){
					var imagenSec:ImagenSecuencia = new ImagenSecuencia();
					var imagen:Imagen = new Imagen();
					var sonido:Sonido = new Sonido();
					
					imagen.id = xmlIS.imagen.id;
					sonido.id = xmlIS.sonido.id;
					
					imagenSec.texto = xmlIS.texto;
					imagenSec.colorTexto = xmlIS.colorTexto;
					imagenSec.imagen = imagen;
					imagenSec.sonido = sonido;
					
					arrayImagenes.addItem(imagenSec);
				}
				
				onGuardarImagen();
			}
			catch(e:Error){
				Alert.show("No se puede leer el archivo", "ERROR");
			}
		}
		
		private function guardarImagen(imagenSec:ImagenSecuencia):void{
			if(imagenSecuenciaDB == null){
				imagenSecuenciaDB = new ImagenSecuenciaDB(DB.connection);
			}
			
			imagenSecuenciaDB.callback = onGuardarImagen;
			imagenSecuenciaDB.guardarImagenSecuencia(perfilDB.idSecuencia, imagenSec);
		}
		
		private function onGuardarImagen():void{
			if(arrayImagenes.length > 0){
				var isec:ImagenSecuencia = arrayImagenes.getItemAt(0) as ImagenSecuencia;
				arrayImagenes.removeItemAt(0);
				guardarImagen(isec);
			}
			else{
				callback();
			}
		}
	}
}